#include<bits/stdc++.h>
using namespace std;
namespace fastio
{
    const int bufl=1<<20;
    const double base1[16]={1,1e-1,1e-2,1e-3,1e-4,1e-5,1e-6,1e-7,1e-8,1e-9,1e-10,1e-11,1e-12,1e-13,1e-14,1e-15};
    const double base2[16]={1,1e1,1e2,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13,1e14,1e15};
    struct IN{
        FILE *IT;char ibuf[bufl],*is=ibuf,*it=ibuf;
        IN(){IT=stdin;}IN(char *a){IT=fopen(a,"r");}
        inline char getChar(){if(is==it){it=(is=ibuf)+fread(ibuf,1,bufl,IT);if(is==it)return EOF;}return *is++;}
        template<typename Temp>inline void getInt(Temp &a){a=0;int b=0,c=getChar();while(c<48||c>57)b^=(c==45),c=getChar();while(c>=48&&c<=57)a=(a<<1)+(a<<3)+c-48,c=getChar();if(b)a=-a;}
        template<typename Temp>inline void getDouble(Temp &a){a=0;int b=0,c=getChar(),d=0;__int128 e=0,f=0;while(c<48||c>57)b^=(c==45),c=getChar();while(c>=48&&c<=57)e=(e<<1)+(e<<3)+c-48,c=getChar();if(c==46){c=getChar();while(c>=48&&c<=57)d++,f=(f<<1)+(f<<3)+c-48,c=getChar();}a=e+base1[d]*f;if(b)a=-a;}
        IN& operator>>(char &a){a=getChar();return *this;}
        IN& operator>>(char *a){do{*a=getChar();}while(*a<=32);while(*a>32)*++a=getChar();*a=0;return *this;}
        IN& operator>>(string &a){char b=getChar();while(b<=32)b=getChar();while(b>32)a+=b,b=getChar();return *this;}
        IN& operator>>(int &a){getInt(a);return *this;}
        IN& operator>>(long long &a){getInt(a);return *this;}
        IN& operator>>(__int128 &a){getInt(a);return *this;}
        IN& operator>>(float &a){getDouble(a);return *this;}
        IN& operator>>(double &a){getDouble(a);return *this;}
        IN& operator>>(long double &a){getDouble(a);return *this;}
    };
    struct OUT{
        FILE *IT;char obuf[bufl],*os=obuf,*ot=obuf+bufl;int Eps;long double Acc;
        OUT(){IT=stdout,Eps=6,Acc=1e-6;}OUT(char *a){IT=fopen(a,"w"),Eps=6,Acc=1e-6;}
        inline void ChangEps(int x=6){Eps=x;}
        inline void flush(){fwrite(obuf,1,os-obuf,IT);os=obuf;}
        inline void putChar(int a){*os++=a;if(os==ot)flush();}
        template<typename Temp>inline void putInt(Temp a){if(a<0){putChar(45);a=-a;}if(a<10){putChar(a+48);return;}putInt(a/10);putChar(a%10+48);}
        template<typename Temp>inline void putLeading(Temp a,int b){if(!b)return;putLeading(a/10,b-1);putChar(a%10+48);}
        template<typename Temp>inline void putDouble(Temp a){if(a<0){putChar(45);a=-a;}__int128 b=a;putInt(b);a-=b;a*=base2[Eps];b=a+Acc;putChar(46);putLeading(b,Eps);}
        OUT& operator<<(char a){putChar(a);return *this;}
        OUT& operator<<(char *a){while(*a>32)putChar(*a++);return *this;}
        OUT& operator<<(string a){for(auto c:a)putChar(c);return *this;}
        OUT& operator<<(int a){putInt(a);return *this;}
        OUT& operator<<(long long a){putInt(a);return *this;}
        OUT& operator<<(__int128 a){putInt(a);return *this;}
        OUT& operator<<(float a){putDouble(a);return *this;}
        OUT& operator<<(double a){putDouble(a);return *this;}
        OUT& operator<<(long double a){putDouble(a);return *this;}
        ~OUT(){flush();}
    };
}
using fastio::IN;
using fastio::OUT;
IN fin;
OUT fout;
const int NN=1e6+4,dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
mt19937 rnd(time(0));
char s[NN],ans[54][54],ne[NN];
char get(int x)
{
	if(!x)
		return 'R';
	if(x==1)
		return 'G';
	return 'B';
}
int main()
{
	freopen("snake.in","r",stdin);
	freopen("snake.out","w",stdout);
	fin>>s+1;
	int n=strlen(s+1);
	for(int i=n;~i;i--)
		if(s[i]==s[i+1])
			ne[i]=ne[i+1];
		else
			ne[i]=s[i+1];
	fout<<"50 50\n"s;
	for(int i=1,x=1;i<=50;i+=2,x++)
		for(int j=1,y=1;j<=50;j+=3,y++)
			if((x+y)%2)
			{
				ans[i][j+1]=ans[i+1][j+1]='R';
				ans[i][j+2]=ans[i+1][j]='G';
				ans[i][j]=ans[i+1][j+2]='B';
			}
			else
			{
				ans[i][j+1]=ans[i+1][j+1]='R';
				ans[i][j+2]=ans[i+1][j]='B';
				ans[i][j]=ans[i+1][j+2]='G';
			}
	for(int i=1;i<=50;i++)
		fout<<ans[i]+1<<'\n';
	vector<pair<int,int> >p;
	pair<int,int>u={25,25};
	for(int i=1;i<=n;i++)
	{
		if(s[i]!=s[i-1])
		{
			for(int j=0;j<4;j++)
				if(ans[u.first+dx[j]][u.second+dy[j]]==s[i])
				{
					u.first+=dx[j],u.second+=dy[j];
					break;
				}
		}
		else
		{
			bool flag=false;
			if(ne[i]=='R')
			{
				if(u.second<=25&&ans[u.first][u.second+1]==s[i])
					u.second++;
				else if(u.second>=25&&ans[u.first][u.second-1]==s[i])
					u.second--;
				else
					flag=true;
			}
			else if(s[i]!='R'||abs(u.first-25)>abs(u.second-25))
			{
				if(u.first<=25&&ans[u.first+1][u.second]==s[i])
					u.first++;
				else if(u.first>=25&&ans[u.first-1][u.second]==s[i])
					u.first--;
				else
					flag=true;
			}
			else
			{
				if(u.second<=25)
				{
					if(ans[u.first+1][u.second+1]==ne[i])
						u.first++;
					else
						u.first--;
				}
				else
				{
					if(ans[u.first+1][u.second-1]==ne[i])
						u.first++;
					else
						u.first--;
				}
			}
			if(flag)
			{
				if(ne[i]=='R')
				{
					if(ans[u.first+1][u.second]==s[i])
						u.first++;
					else
						u.first--;
				}
				else
				{
					if(ans[u.first][u.second+1]==s[i])
						u.second++;
					else
						u.second--;
				}
			}
		}
		p.push_back(u);
	}
	fout<<p[0].first<<' '<<p[0].second<<'\n';
	for(int i=1;i<p.size();i++)
		if(p[i].first==p[i-1].first+1)
			fout<<'D';
		else if(p[i].first==p[i-1].first-1)
			fout<<'U';
		else if(p[i].second==p[i-1].second+1)
			fout<<'R';
		else
			fout<<'L';
	return 0;
}
